const { api } = require('../../utils/api');

Page({
  data: {
    products: [],
    isLoading: false,
    page: 1,
    pageSize: 10,
    hasMore: true,
    currentPage: 1,  // 当前页码
    totalPages: 1,    // 总页数
    searchKeyword: '' // 搜索关键词
  },

  onLoad() {
    this.loadProducts();
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.setData({
      products: [],
      page: 1,
      currentPage: 1,
      hasMore: true
    });
    this.loadProducts().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 上拉加载更多 - 这里我们不再使用上拉加载，而是使用分页按钮
  onReachBottom() {
    // 不再使用上拉加载更多
  },

  // 封装request为Promise
  request(options) {
    return new Promise((resolve, reject) => {
      wx.request({
        ...options,
        success: (res) => {
          resolve(res.data);
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  },

  // 处理搜索输入
  onSearchInput(e) {
    this.setData({
      searchKeyword: e.detail.value
    });
  },

  // 清空搜索内容
  clearSearch() {
    this.setData({
      searchKeyword: '',
      currentPage: 1
    });
    this.loadProducts();
  },

  // 触发搜索
  onSearch() {
    this.setData({
      currentPage: 1
    });
    this.loadProducts();
  },

  // 加载商品数据
  async loadProducts() {
    if (this.data.isLoading) return;

    this.setData({
      isLoading: true,
      products: [] // 清空现有商品列表
    });

    try {
      const params = {
        current: this.data.currentPage,
        size: this.data.pageSize
      };

      // 如果有搜索关键词，添加到参数中
      if (this.data.searchKeyword) {
        params.name = this.data.searchKeyword;
      }

      // 使用封装的request方法
      const result = await this.request({
        url: 'http://localhost:8080/api/products/page',
        method: 'GET',
        data: params
      });
      
      if (result.code === 200 && result.data) {
        this.setData({
          products: result.data.records,  // 只显示当前页的数据
          totalPages: result.data.pages,
          hasMore: this.data.currentPage < result.data.pages
        });

        // 如果搜索无结果，给用户提示
        if (result.data.records.length === 0 && this.data.searchKeyword) {
          wx.showToast({
            title: '未找到相关商品',
            icon: 'none'
          });
        }
      } else {
        wx.showToast({
          title: result.message || '获取商品失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('获取商品列表失败:', error);
      wx.showToast({
        title: '获取商品失败，请重试',
        icon: 'none'
      });
    } finally {
      this.setData({
        isLoading: false
      });
    }
  },

  // 上一页
  prevPage() {
    if (this.data.currentPage > 1) {
      this.setData({
        currentPage: this.data.currentPage - 1
      });
      this.loadProducts();
    }
  },

  // 下一页
  nextPage() {
    if (this.data.currentPage < this.data.totalPages) {
      this.setData({
        currentPage: this.data.currentPage + 1
      });
      this.loadProducts();
    }
  },

  // 跳转到商品详情
  navigateToDetail(e) {
    const productId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/mall/detail?id=${productId}`
    });
  }
}); 